cmake_minimum_required(VERSION 3.16)

project(WinXY_Toolkit VERSION 1.0 LANGUAGES CXX)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)

set(PROJECT_SOURCES
        main.cpp
        winxy.cpp
        winxy.h
        scheduled_shutdown.cpp
        scheduled_shutdown.h
        optimize_performance.cpp
        optimize_performance.h
        context_menu.cpp
        context_menu.h
)

# Standard executable creation
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
    qt_add_executable(WinXY_Toolkit
        MANUAL_FINALIZATION
        ${PROJECT_SOURCES}
    )
else()
    add_executable(WinXY_Toolkit
        ${PROJECT_SOURCES}
    )
endif()

target_link_libraries(WinXY_Toolkit PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)

# Windows-specific settings (Hides console window)
set_target_properties(WinXY_Toolkit PROPERTIES
    WIN32_EXECUTABLE TRUE
)

include(GNUInstallDirs)

install(TARGETS WinXY_Toolkit
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

if(QT_VERSION_MAJOR EQUAL 6)
    qt_finalize_executable(WinXY_Toolkit)
endif()
